/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gla.centralhotel.dao.interfaces;

import gla.centralhotel.exception.CollectionRetrieverException;
import gla.centralhotel.exception.SubscriptionManagementException;
import gla.centralhotel.exception.TooLongTextException;
import gla.centralhotel.model.Hotel;
import gla.centralhotel.model.Manager;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Local;

/**
 *
 * @author Rivo
 */
@Local
public interface IHotelDAO {

    Hotel edit(Hotel hotel);

    void remove(Hotel hotel);

    Hotel find(Object id);

    List<Hotel> findAll();

    /**
     * Récupère tous les hotels d'un manager
     * @param manager
     * @return
     * @throws gla.centralhotel.exception.CollectionRetrieverException
     */
    public ArrayList<Hotel> getAllHotelByManager(Manager manager) throws CollectionRetrieverException;
    
    /**
     * Enregistre l'hotel s'il n'existe pas et que s'il a une refManager
     * @param hotel
     * @return
     * @throws gla.centralhotel.exception.SubscriptionManagementException
     */
        public Hotel saveHotel(Hotel hotel) throws SubscriptionManagementException, TooLongTextException;

    /**
     * retourne la liste des hotel dans une ville
     * @param z
     * @return
     * @throws gla.centralhotel.exception.CollectionRetrieverException
     */
    public java.util.ArrayList<gla.centralhotel.model.Hotel> getHotelByZipcode(gla.centralhotel.model.Zipcode z) throws gla.centralhotel.exception.CollectionRetrieverException;
}
